package com.mzy.datepackage.M2022.Aug.thirty_first.service.data_resources;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.mzy.datepackage.M2022.Aug.thirty_first.QuoteParams;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;

/**
 * 数据库资源
 * */
@Data
@ApiModel(value = "数据库资源")
public class Database extends QuoteParams {

    /**
     * 资源名称
     * */
    @ApiModelProperty(value = "资源名称，不能为空")
    private String name;
    /**
     * 同步账号用户名
     * */
    @ApiModelProperty(value = "同步账号用户名,不能为空")
    private String username;
    /**
     * 同步账号密码
     * */
    @JSONField(name = "userpass")
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    @ApiModelProperty(value = "同步账号密码，更新的情况下为空则不更新，新增不能为空")
    private String userPass;
    /**
     * 业务账号用户名
     * */
    @JSONField(name = "initusername")
    @ApiModelProperty(value = "业务账号用户名,不能为空,长度在3-48之间")
    private String initUsername;
    /**
     * 业务账号密码
     * */
    @JSONField(name = "inituserpass")
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    @ApiModelProperty(value = "业务账号密码，更新的情况下为空则不更新，新增不能为空")
    private String initUserPass;
    /**
     * 模式名
     * */
    @JSONField(name = "schemaname")
    @ApiModelProperty(value = "模式名,选填")
    private String schemaName;
    /**
     * 数据库类型 oracle/sqlserver/mysql/db2/sybase/dm/oscar/kingbasees/gbase
     * */
    @ApiModelProperty(value = "数据库类型，可选项oracle/sqlserver/mysql/db2/sybase/dm/oscar/kingbasees/gbase")
    @NotEmpty(message = "数据库类型不能为空")
    private String type;

    /**
     * 是否使用了ip对象
     * */
    @ApiModelProperty(value = "是否使用了ip对象，可选值true/false")
    private boolean isUseIpAliases;

    /**
     * 数据库服务器ip地址
     * */
    @ApiModelProperty(value = "数据库服务器ip地址，ip地址不能为空")
    private String ip;
    /**
     * 数据库端口，默认端口为oracle:1521 sqlserver:1433 mysql:3306 db2:50000 sybase:5000 dm:5236 oscar:2003 kingbasees:54321 gbase:5258
     * */
    @ApiModelProperty(value = "数据库端口，不能为空，并且范围必须在1-65535之间")
    private int port;
    /**
     * 数据库名
     * */
    @JSONField(name = "dbname")
    private String dbName;
    /**
     * 临时表前缀
     * */
    @JSONField(name = "logtablenameprefix")
    @ApiModelProperty(value = "临时表前缀，不能为空")
    private String logTableNamePrefix;
    /**
     * 触发器前缀
     * */
    @JSONField(name = "triggernameprefix")
    @ApiModelProperty(value = "触发器前缀，不能为空")
    private String triggerNamePrefix;
    /**
     * 描述
     * */
    @ApiModelProperty(value = "描述，选填")
    private String descr;


}
